草庐IT

C++ typedef 结构与类

全部标签

c# - 在显式结构中将多个 CLR 引用字段相互重叠?

编辑:我很清楚这对值类型非常有效,我的具体问题是关于将它用于引用类型。Edit2:我还知道您不能在结构中叠加引用类型和值类型,这仅适用于将多个引用类型字段相互叠加的情况。我一直在研究.NET/C#中的结构,我刚刚发现您可以这样做:usingSystem;usingSystem.Runtime.InteropServices;namespaceConsoleApplication1{classFoo{}classBar{}[StructLayout(LayoutKind.Explicit)]structOverlaid{[FieldOffset(0)]publicobjectAsObje

C#。结构方法代码保存在内存中的什么地方?

众所周知,.NET将值类型保存在内存中(大部分在堆栈中,但在某些情况下也可能在堆中等)...我的问题是-结构的代码在哪里?如果我在结构中说出16字节的数据字段和其中的大量计算方法-我假设16字节将被复制到堆栈中并且方法代码存储在其他地方并为所有实例共享结构。这些假设是否正确? 最佳答案 MSIL存储在程序集的代码部分中-Windows在首次加载程序集时将其映射到内存中。首次执行该方法时,JIT会将MSIL编译为x86/x64代码。一旦该方法被编译到内存中,它通常会留在那里并由所有线程共享。在某些情况下,多个AppDomain会导致M

c# - 有没有更好的方法来创建多维强类型数据结构?

我需要一个多维数据结构,其中每个维度都是一个在设计时已知的小列表。在我程序的不同位置,我希望能够以强类型方式访问按不同维度“切片”的数据。我在下面放了一些示例代码,适用于使用嵌套界面的2D示例,但我想它在3D或4D中会变得非常可怕。正如@kvb指出的那样,所需的样板代码将呈指数级增长。谁有更好的建议?我的意思是,保持代码简单/简短/易于理解,同时仍然保留按照以下几行做事的能力:Dataa=newData(...)...SomeMethodThatOnlyCaresAboutRedThings(a.Red)//takesaIBySize...SomeMethodThatOnlyCares

C#使用反射获取不安全结构中固定字段的类型

我正在尝试使用一些固定字段获取不安全结构的字段类型。固定字段FieldType不返回实际类型。[StructLayout(LayoutKind.Sequential,Pack=1)]publicunsafestructMyStruct{publicUInt32Field1;publicfixedsbyteField2[10];publicUInt64Field3;}voidTest(){vartheStruct=newMyStruct();stringoutput="";foreach(FieldInfofiintheStruct.GetType().GetFields(Binding

c# - 包含 guid 的结构上的 Marshal.SizeOf 提供额外的字节

我有几个具有顺序布局的结构:structS1{Guidid;}structS2{Guidid;shorts;}structS3{Guidid;shorts;shortt;}在上述结构类型上调用Marshal.SizeOf,我得到了:Size:S1=16,asexpected.S2=20,copiedaninstancetoabytearray,itonlyoccupiesfirst18bytes.S3=20.我的问题是,为什么S2的大小是20而不是18。只有当Guid在结构中时才会出现这个问题。很抱歉无法从msdn中找到任何有用的信息。我知道Marshal.SizeOf给出了该类型在内

c# - 单独的 git 存储库中的服务结构项目

按照正常的微服务框架,我们希望将每个微服务放在它自己的git存储库中,然后为ServiceFabric项目创建一个存储库。当我们更新其中一个微服务时,ServiceFabric项目将只重新部署该服务。有没有像这样拆分ServiceFabric项目的例子?我注意到在他们的所有示例中,所有内容都在一个解决方案/存储库中。 最佳答案 tl;dr:找出在管理代码和发布单个服务方面最适合您的开发团队的方法。使用diffpackages仅升级ServiceFabric应用程序中的更改。最小的存储库大小应该是一个VisualStudio解决方案中

c# - Marshall 结构数组

我花了很多时间寻找解决方案,但仍然没有找到。我有2个类:[StructLayout(LayoutKind.Sequential)]publicclassResult{publicintNumber;[MarshalAs(UnmanagedType.ByValTStr,SizeConst=4)]publicstringName;publicintSize;}[StructLayout(LayoutKind.Sequential)]publicclassCoverObject{publicintNumOfResults;[MarshalAs(UnmanagedType.ByValArray

c# - 结构中 C# 固定 bool 数组的大小和对齐方式是什么?

在做P/Invoke的时候,数据布局的匹配很重要。我们可以通过使用一些属性来控制结构的布局。例如:structMyStruct{publicboolf;}给出大小为4。虽然我们可以告诉编译器将其设为1字节bool以匹配bool的C++类型:structMyStruct{[MarshalAs(UnmanagedType.I1)]publicboolf;}大小为1。这些是有道理的。但是当我测试固定的bool数组时,我感到困惑。unsafestructMyStruct{publicfixedboolfs[1];}给出4个字节的大小。和unsafestructMyStruct{publicfi

c# - Entity Framework 中的类和接口(interface)层次结构?

我有两个相关的类,它们共享一个公共(public)接口(interface)并且都存储在同一个基础数据库表中。但是,EntityFramework生成一个公共(public)类,而我确实需要两个不同的类。我该如何解决这个问题?最好使用基类而不是接口(interface)吗?如何更改EF模型以提供映射到一张表上的两个类?编辑:AccountType属性决定类的类型;用户或组。一些简单的代码:publicinterfaceIAccount{stringName{get;set;}AccountTypeAccountType{get;set;}}publicclassGroupAccount

c# - 在 C# 中新建一个空结构有什么作用?

如果你已经声明了一个结构:structEmptyResult{}在实例中创建类型为EmptyResult的变量的结果是什么?publicFoo(){EmptyResultresult;}您希望在堆栈上进行分配,还是实际上是空操作? 最佳答案 C#编译器强制空结构的大小为1字节。如果您查看反编译器中的结构,您可以看到这一点:[StructLayout(LayoutKind.Sequential,Size=1)]privatestructEmptyResult{}因此类或堆栈中该结构的任何实例都将占用1个字节,与System.Byte或